package dao;

import java.util.List;

import allaboutmybook.DetalhesPaginaLivro;
import daosbd.DaoGenericoJPA;
import excecoes.DAOException;
import excecoes.PaginaDoLivroNaoCriadaException;

public class DAOConcretoDetalhesPaginaLivro extends DaoGenericoJPA<DetalhesPaginaLivro> implements DAODetalhesPaginaLivro
{

	@Override
	public void criarPaginaLivro(DetalhesPaginaLivro detalhesDaPagina)
			throws DAOException 
	{
		try
		{
			if(paginaLivroJahExiste() != true)
			{
				this.adicionarEntidade(detalhesDaPagina);
			}
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
		
		
	}

	@Override
	public boolean paginaLivroJahExiste() throws DAOException 
	{
		try
		{
			@SuppressWarnings("unchecked")
			List<DetalhesPaginaLivro> listaPaginasLivroJahCriadas = this.encontrarTodos();
			if(listaPaginasLivroJahCriadas.size() > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		catch(DAOException exc)
		{
			throw new DAOException(exc);
		}
		
	}

	@Override
	public DetalhesPaginaLivro pegarDetalhesPaginaLivro() throws PaginaDoLivroNaoCriadaException, DAOException 
	{
		try
		{
			boolean paginaLivroJaExiste = paginaLivroJahExiste();
			
			if(paginaLivroJaExiste == false)
			{
				throw new PaginaDoLivroNaoCriadaException();
			}
			else
			{
				/*nossa base de dados so pode armazenar uma unica instancia de detalhes do livro,
				 * por isso pegaremos somente a primeira entrada da base de dados e esse sera
				 * nosso detalhesPaginaLivro*/
				List<DetalhesPaginaLivro> listaDetalhes = this.encontrarTodos();
				DetalhesPaginaLivro detalhesPaginaLivro = listaDetalhes.get(0);
				return detalhesPaginaLivro;
			}
		}
		catch(DAOException e)
		{
			throw new DAOException(e);
		}
	}
	

}
